package vip.xiaonuo.bi.core.datasource.common.client;

import vip.xiaonuo.bi.core.datasource.common.AbstractDataSourceConfig;
import vip.xiaonuo.bi.core.datasource.config.SqlQueryConig;
import vip.xiaonuo.bi.modular.datasource.dto.ColunmDto;

import java.sql.Connection;
import java.util.List;

/**
 * 数据库数据源（关系 非关系） 连接对象接口
 * @author 顾育司
 * @date  2023/12/15 12:09
 */
public interface DataSourceClient extends Client{

    /**
     * 测试数据源连接
     * @throws Exception
     */
    Boolean testConnection(AbstractDataSourceConfig config) throws Exception;

    Connection getConnection(AbstractDataSourceConfig config) throws Exception;

    /**
     * 获得连接下的表名
     * @param dataSourceConfig
     * @param queryConig
     * @return
     */
    List<String> getTableList(AbstractDataSourceConfig dataSourceConfig, SqlQueryConig queryConig);

    List<ColunmDto> getcolumList(AbstractDataSourceConfig dataSourceConfig, SqlQueryConig queryConig);

    /**
     * 获得连接下的表的预览数据
     * @param dataSourceConfig
     * @param queryConig
     * @return
     */
    List<List<String>> getPreview(AbstractDataSourceConfig dataSourceConfig, SqlQueryConig queryConig);
}
